#include <stdio.h>

int main(int argc, char const *argv[])
{
    // 1. 常目标指针
    int a = 100;
    const int  *p1 = &a; // 不能通过指针来修改其目标
    int const  *p2 = &a;
    // *p1 = 100; // ×
    // int b;
    // p1 = &b; // √

    // 2. 常指针
    int * const p3 = &a; // 本身不能变，不能修改指针的指向

    *p3 = 300; // √
    int c;
    p3 = &c; // ×

    void   f (int , char, float);
    void (*p)(int , char, float);
    p = &f;
    p =  f;
      f (100, 'a', 3.14);
      p (100, 'a', 3.14);
    (*p)(100, 'a', 3.14);
    ( p)(100, 'a', 3.14);


    void (*p2)(void) = &f2;

    return 0;
}

void f2(void)
{

}

// 函数f，本质就是一个地址，就是一个指针
void f(int , char, float)
{
    ....
    ....
    ....
    ....
    ....
    ....
    ....
}